package com.itc.bpm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itc.bpm.bean.BpmProcessTaskExt;
import com.itc.bpm.dto.*;
import com.itc.bpm.vo.BpmCurrentUserTask;
import com.itc.bpm.vo.BpmTaskRebackVo;
import com.itc.bpm.vo.BpmUserTaskVo;
import com.itc.common.core.domain.R;

import java.util.List;

/**
 * 流程任务实例信息
 */
public interface BpmProcessTaskExtService extends IService<BpmProcessTaskExt> {
    /**
     * 根据任务id 查找 任务信息
     * @param taskId
     * @return
     */
    BpmProcessTaskExt findTaskByTaskId(String taskId);

    /**
     * 终止流程未完成任务
     * @param processInstaneId
     */
    void cancenProcessTasks(String processInstaneId);

    /**
     * 认领任务
     * @param taskId
     * @return
     */
    R<String> claimTask(String taskId);

    /**
     * 获取流程实例任务信息
     * @param processInstanceId
     * @return
     */
    R<BpmViewDto> getTaskListByProcessInstanceId(String processInstanceId);

    /**
     * 保存提交任务
     * @param bpmStartVO
     * @return
     */
    R<String> commitTask(BpmUserTaskVo bpmStartVO);

    /**
     *
     * @param processInstanceId
     * @return
     */
    R<List<BpmUserTaskDto>> findOurTasks(BpmCurrentUserTask task);

    R<List<BpmHistoryTaskDto>> historyTaskRecord(String processInstanceId);

    /**
     * 驳回任务
     * @param rebackVo
     * @return
     */
    R rebackBpmTask(BpmTaskRebackVo rebackVo);
}
